From 65233726f840adb97caff13f131a803ea3cd31e7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 2 May 2019 19:11:30 +0000 Subject: [PATCH] event controller: Don't deliver events to insensitive widgets This is another way to avoid delivering events to insensitive widgets. --- gtk/gtkeventcontroller.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/gtk/gtkeventcontroller.c b/gtk/gtkeventcontroller.c index aed43c3d5e..4cfb498f2f 100644 --- a/gtk/gtkeventcontroller.c +++ b/gtk/gtkeventcontroller.c @@ -63,6 +63,7 @@ gtk_event_controller_set_widget (GtkEventController *self, GtkEventControllerPrivate *priv = gtk_event_controller_get_instance_private (self); priv->widget = widget; + priv->responsive = gtk_widget_get_sensitive (widget); } static void @@ -73,6 +74,18 @@ gtk_event_controller_unset_widget (GtkEventController *self) priv->widget = NULL; } +static gboolean +gtk_event_controller_filter_event_default (GtkEventController *self, + const GdkEvent *event) +{ + GtkEventControllerPrivate *priv = gtk_event_controller_get_instance_private (self); + + if (priv->widget) + return !gtk_widget_get_sensitive (priv->widget); + + return FALSE; +} + static gboolean gtk_event_controller_handle_event_default (GtkEventController *self, const GdkEvent *event) @@ -128,7 +141,7 @@ gtk_event_controller_class_init (GtkEventControllerClass *klass) klass->set_widget = gtk_event_controller_set_widget; klass->unset_widget = gtk_event_controller_unset_widget; - klass->filter_event = gtk_event_controller_handle_event_default; + klass->filter_event = gtk_event_controller_filter_event_default; klass->handle_event = gtk_event_controller_handle_event_default; object_class->set_property = gtk_event_controller_set_property; -- 2.30.2